Міністерство освіти і науки України
Національний університет «Львівська політехніка»
Інститут комп’ютерних наук та інформаційних технологій
Кафедра АСУ
Лабораторна робота №3
Середовище програмування DELPHI
Львів 2010
Мета роботи: вивчити можливості графічної підсистеми Delphi 5, її властивості та принципи побудови прикладних програм з використанням графіки.
Порядок роботи:
Створити проект для виконання індивідуального завдання.
Оформити звіт для захисту лабораторної роботи за зразком
назва роботи
мета роботи
порядок роботи
короткі теоретичні відомості
алгоритм розв’язку задачі
тексти відповідних модулів проекту
аналіз отриманих результатів та висновки
Питання для самоконтролю
1.Які класи відповідають за роботу з графікою в Delphi?
2. Які графічні інструменти представлені в Delphi?
3. Охарактеризуйте властивості та методи класу TCanvas.
4. Які існують типи графічних зображень?
5.Як завантажити на форму зображення з файлу?
Короткі теоретичні відомості
Створення зображень
У Win32 для малювання об’єктів, які ми бачимо на екрані комп’ютера використовується інтерфейс GDI (Graphic Device Interface). До появи Delphi програміст безпосередньо працював з функціями та інструментами GDI (пером, пензлем та шрифтом) через графічний контекст вікна.
Для використання графічних інструментів Windows у Delphi створені відповідні класи: для графічного контексту - клас TCanvas, для пера - TPen, для пензля – TBrush, для шрифту - TFont. Об’єкти цих класів автоматично створюються для форми і більшості видимих елементів на формі і стають доступними через властивості Canvas, Pen, Brush та Font.
Наступні два приклади демонструють наскільки застосування Delphi спрощує роботу з графікою в Win32. Приклад 1 використовує стандартні GDI-функції, приклад 2 створює аналогічний малюнок засобами класів Delphi.
Приклад 1.
procedure TForm1.FormPaint(Sender: TObject);
var
PaintDC : HDC;
PenHandle, OldPenHandle: HPEN;
BrushHandle, OldBrushHandle: HBRUSH;
begin
PaintDC := GetDC(Handle); { отримати графічний контекст форми }
PenHandle := CreatePen(PS_SOLID, 1, RGB(0, 0, 255)); { створити синє перо }
OldPenHandle := SelectObject(PaintDC, PenHandle); { використати його у графічному контексті }
BrushHandle := CreateSolidBrush(RGB(255, 255, 0)); { створити жовтий пензель }
OldBrushHandle := SelectObject(PaintDC, BrushHandle); { використати його у графічному контексті }
Ellipse(PaintDC, 10, 10, 50, 50); { намалювати еліпс }
SelectObject(PaintDC, OldBrushHandle); { відновити попередній пензель }
DeleteObject(BrushHandle); { знищити жовтий пензель }
SelectObject(PaintDC, OldPenHandle); { відновити попереднє перо }
DeleteObject(PenHandle); { знищити синє перо }
end;
Приклад 2.
procedure TForm1.FormPaint(Sender: TObject);
begin
with Canvas do { працюємо з властивістю Canvas класу TForm }
begin
Pen.Color := clBlue; { створити синє перо }
Brush.Color := clYellow; { створити жовтий пензель }
Ellipse(10, 10, 50, 50); { намалювати еліпс }
end;
end;
Canvas (канва, полотно) - це площа видимого елемента на формі, на якій можна малювати (графічний контекст вікна). Вона є однією з властивостей видимого елемента. Font, Pen та Brush є підвластивостями Canvas !.
Деякі видимі елементи не мають властивість Canvas, наприклад панелі - компоненти класу TPanel. На таких компонентах можна малювати, якщо розмістити на них спеціальну компоненту класу TPaintBox. Крім того об’єкти PaintBox можна використовувати для обмеження на формі чи на деякій компоненті ділянки малювання одним чи декількома прямокутниками.
У процесі розробки проекту властивість Canvas недоступна у вікні Object Inspector. Щоб використати Canvas слід присвоїти її підвластивостям необхідні значення та викликати потрібні методи (див. приклад 2).
Клас TCanvas інкапсулює графіку Windows різного рівня. До нього включені функції високого рівня для малювання ліній, фігур або тексту, можливості середнього рівня для роботи з графічними інструментами та можливості найнижчого рівня...